package com.xdb.sqlparser.util;

import com.xdb.sqlparser.dialect.mysql.parser.MySqlExprParser;
import com.xdb.sqlparser.dialect.mysql.parser.MySqlStatementParser;
import com.xdb.sqlparser.dialect.oracle.parser.OracleExprParser;
import com.xdb.sqlparser.dialect.oracle.parser.OracleStatementParser;
import com.xdb.sqlparser.dialect.sql99.parser.SQL99ExprParser;
import com.xdb.sqlparser.dialect.sql99.parser.SQL99StatementParser;
import com.xdb.util.JdbcUtils;

public class SQLParserUtils {

	public static SQL99StatementParser createSQLStatementParser(String sql, String dbType) {
		if (JdbcUtils.ORACLE.equals(dbType)) {
			return new OracleStatementParser(sql);
		}

		if (JdbcUtils.MYSQL.equals(dbType)) {
			return new MySqlStatementParser(sql);
		}
		if (JdbcUtils.H2.equals(dbType)) {
			return new MySqlStatementParser(sql);
		}

		return new SQL99StatementParser(sql);
	}

	public static SQL99ExprParser createExprParser(String sql, String dbType) {
		if (JdbcUtils.ORACLE.equals(dbType)) {
			return new OracleExprParser(sql);
		}

		if (JdbcUtils.MYSQL.equals(dbType) || JdbcUtils.H2.equals(dbType)) {
			return new MySqlExprParser(sql);
		}

		return new SQL99ExprParser(sql);
	}
}
